package com.eblacorp.archive.service;

import java.beans.IntrospectionException;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.List;

import com.eblacorp.archive.domain.fn.RealtyDocument;
import com.eblacorp.archive.exceptions.NoAttachedFnDocument;
import com.eblacorp.archive.exceptions.NotFnDocumentException;
import com.eblacorp.archive.exceptions.NullValueException;

public interface RealtyDocumentService {
	public List<RealtyDocument> search(RealtyDocument realtyDocument,Integer startPage, Integer pageSize, boolean withDocument)throws IllegalArgumentException, NotFnDocumentException, IntrospectionException, IllegalAccessException, InvocationTargetException, InstantiationException ;
	public RealtyDocument addNewDocument(RealtyDocument realtyDocument, File file) throws IllegalArgumentException, NotFnDocumentException, IntrospectionException, IllegalAccessException, InvocationTargetException, InstantiationException, NullValueException, IOException;
	public void deleteDocument(RealtyDocument realtyDocument, boolean allVersion) throws IllegalArgumentException, IntrospectionException, IllegalAccessException, InvocationTargetException, NullValueException ;
	public String getViewerUrl(RealtyDocument realtyDocument);
	public RealtyDocument updateDocument(RealtyDocument realtyDocument, File file)throws IllegalArgumentException, IntrospectionException,IllegalAccessException, InvocationTargetException,NullValueException, IOException;
	byte[] download(RealtyDocument realtyDocument) throws NoAttachedFnDocument,IOException;
}
